package gui;

import iv.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class NeueAussaatDAF extends JDialog implements ActionListener {
	
	/**
	 * x-Koordinate der Linken, oberen Ecke des Fensters
	 */
	private final int X0 = 80;
	
	/**
	 * y-Koordinate der Linken, oberen Ecke des Fensters
	 */
	private final int Y0 = 60;
	
	/** 
	 * Info-Platte
	 */
	private JPanel infoDP = new JPanel( );
	
	private JPanel strgDP = new JPanel();
	
	/**
	 *Beschriftung: artikelNr. 
	 */
	private JLabel sortenNameDB = new JLabel( "Sortenname" );
	
	/** 
	 * Textfeld: artikelNr. 
	 */
	private JTextField sortenNameDW = new JTextField( 20 );
	
	/** 
	 * Beschriftung: Bezeichnung 
	 */
	private JLabel artenNameDB = new JLabel( "Artenname" );
	
	/** 
	 * Textfeld: Bezeichnung 
	 */
	private JTextField artenNameDW = new JTextField( );
	
	/** 
	 * Beschriftung: Einheit 
	 */
	private JLabel schaerfegradDB = new JLabel( "Schärfegrad" );
	
	/** 
	 * Textfeld: Einheit 
	 */
	private JTextField schaerfegradDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel reifeZeitDB = new JLabel( "Reifezeit" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField reifeZeitDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel ertragDB = new JLabel( "Ertrag" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField ertragDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel herkunftDB = new JLabel( "Herkunft" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField herkunftDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel fruchtFarbeDB = new JLabel( "Fruchtfarbe" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField fruchtFarbeDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel topfGroesseDB = new JLabel( "Topfgröße" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField topfGroesseDW = new JTextField( );
	
	/** 
	 * Beschriftung: Preis pro Einheit 
	 */
	private JLabel duengerDB = new JLabel( "Dünger" );
	
	/**
	 * Textfeld: Preis pro Einheit 
	 */
	private JTextField duengerDW = new JTextField( );
	
	private JLabel aussaatDatumDB = new JLabel( "Aussaatdatum" );
	
	/** 
	 * DialogAusl�seSchalter zum Radieren der Werte der Wertefelder
	 */
	private JButton neuDAS = new JButton( "neu" );
	
	/** 
	 * DialogAusl�seSchalter zum Schlie�en des Fensters 
	 */
	private JButton schliessenDAS = new JButton( "schließen" );
	
	/** 
	 * DialogAusl�seSchalter zum Einf�gen der Daten eines Artikels in die Datenbank 
	 */
	private JButton einfuegenDAS = new JButton( "einfügen" );
	
	/** 
	 * DialogAusl�seSchalter zum �ffnen des Auswahlfensters 
	 */
	private JButton auswaehlenDAS = new JButton( "auswählen" );
	
	/** 
	 * DialogAusl�seSchalter zum �ndern der Daten eines Artikels in der Datenbank 
	 */
	private JButton aendernDAS = new JButton( "ändern" );
	
	/** 
	 * DialogAusl�seSchalter zum L�schen der Daten eines Artikels in der Datenbank 
	 */
	private JButton loeschenDAS = new JButton( "löschen" );
	
	private Art art;
	private Aussaat aussaat;
	private Ernte ernte;
	private Pflanze pflanze;
	private Sorte sorte;
	private Wachstum wachstum;
	
	public NeueAussaatDAF(ChilidatenbankDIF chilidatenbankDIF)
	{
		super(chilidatenbankDIF);	//aufruf eines Konstruktors der Oberklasse JDialog -> auftragsverwaltungDIF ist der eigent�mer...
										//...Das bedeutet, dass das artikelBearbDAF geschlossen wird, wenn das auftragsverwaltungDIF Fenster geschlossen wird
		setTitle("Neue Aussaat anlegen");
		
		//Lage Bestimmen
		setLocation(X0,Y0);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		
		bestandteileAnordnen();
		
		//Fenstergr��e aus der Gr��e der Kompnenten bestimmen
		pack();
		ereignissensorenAnmeldung();
		
		setVisible(true);
	}
	
	/**
	 * Ereignissensoren anmelden
	 */
	public void ereignissensorenAnmeldung(){
		neuDAS.addActionListener(this);
		schliessenDAS.addActionListener(this);
		einfuegenDAS.addActionListener(this);
		auswaehlenDAS.addActionListener(this);
		aendernDAS.addActionListener(this);
		loeschenDAS.addActionListener(this);
	}
	
public void bestandteileAnordnen(){
		
		//Anordnung vereinbaren
		GroupLayout dafLayout = new GroupLayout(getContentPane());
		getContentPane().setLayout(dafLayout);
		
		//Voreingestellte L�cken verwenden
		dafLayout.setAutoCreateGaps(true);
		dafLayout.setAutoCreateContainerGaps(true);
		
		//***senkrechte Gruppierung vereinbaren
		dafLayout.setVerticalGroup(dafLayout.createSequentialGroup().
				addComponent(infoDP).
				addComponent(strgDP)
		);
		
		//***waagerechte Gruppierung vereinbaren
		dafLayout.setHorizontalGroup(dafLayout.createParallelGroup().
				addComponent(infoDP).
				addComponent(strgDP)
		);		
		
		//die Komponenten der Info-Platte anordnen
		infoDPAnordnen();
		
		//Die Komponenten der Steuerungsplatte anordnen
		strgDPAnordnen();
	}
	
	/**
	 * legt die Anordnung der Komponenten in der Info-Platte fest
	 */
	public void infoDPAnordnen(){
		
		//Anordnung vereinbaren
		GroupLayout infoDPLayout = new GroupLayout(infoDP);
		infoDP.setLayout(infoDPLayout);
		
		//voreingestellte L�cken verwenden
		infoDPLayout.setAutoCreateGaps(true);
		infoDPLayout.setAutoCreateContainerGaps(true);
		
		// senkrechte Gruppierung vereinbaren
		infoDPLayout.setVerticalGroup(infoDPLayout.createSequentialGroup( ).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( sortenNameDB ).
						addComponent( sortenNameDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
					  	addComponent( artenNameDB ).
						addComponent( artenNameDW )
					).
			  		addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
			  			addComponent( schaerfegradDB ).
			  			addComponent( schaerfegradDW )
					).
			  		addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( reifeZeitDB ).
					  	addComponent( reifeZeitDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( ertragDB ).
						addComponent( ertragDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( herkunftDB ).
						addComponent( herkunftDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( fruchtFarbeDB ).
						addComponent( fruchtFarbeDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( topfGroesseDB ).
						addComponent( topfGroesseDW )
					).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
						addComponent( duengerDB ).
						addComponent( duengerDW )
			  		).
					addGroup(infoDPLayout.createParallelGroup( GroupLayout.Alignment.BASELINE ).
							addComponent( aussaatDatumDB )));
						
		// waagerehte Gruppierung vereinbaren
		infoDPLayout.setHorizontalGroup(infoDPLayout.createParallelGroup( ).addGroup(infoDPLayout.createSequentialGroup( ).
										addGroup( infoDPLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false ).
												addComponent( sortenNameDB, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( artenNameDB,GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( schaerfegradDB, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( reifeZeitDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( ertragDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( herkunftDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( fruchtFarbeDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( topfGroesseDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( duengerDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( aussaatDatumDB,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE )
										).
										addGroup( infoDPLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false ).
												addComponent( sortenNameDW, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( artenNameDW,GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( schaerfegradDW, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE ).
												addComponent( reifeZeitDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( ertragDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( herkunftDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( fruchtFarbeDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( topfGroesseDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE ).
												addComponent( duengerDW,GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE )
										)
								));
			
	}
	
	/**
	 * legt die Anordnung der Komponenten in der Steuerungsplatte fest
	 */
	public void strgDPAnordnen(){
		
		//Anordnung vereinbaren
		GroupLayout strgDPLayout = new GroupLayout(strgDP);
		strgDP.setLayout(strgDPLayout);
		
		//voreingestellte L�cken verwenden
		strgDPLayout.setAutoCreateGaps(true);
		strgDPLayout.setAutoCreateContainerGaps(true);
		
		//senkrechte Gruppierung vereinbaren
		strgDPLayout.setVerticalGroup(strgDPLayout.createSequentialGroup().
				addGroup(strgDPLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).
						addComponent(neuDAS).
						addComponent(einfuegenDAS).
						addComponent(aendernDAS)
				).
				addGroup(strgDPLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).
						addComponent(schliessenDAS).
						addComponent(auswaehlenDAS).
						addComponent(loeschenDAS)
				)
		);
		
		//waagerechte Gruppierung vereinbaren
		strgDPLayout.setHorizontalGroup(strgDPLayout.createSequentialGroup().
				addGroup(strgDPLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false).
						addComponent(neuDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).
						addComponent(schliessenDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
				).
				addGroup(strgDPLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false).
						addComponent(einfuegenDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).
						addComponent(auswaehlenDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
				).
				addGroup(strgDPLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false).
						addComponent(aendernDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).
						addComponent(loeschenDAS, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
				)
		);
	}
	
	/**
	 * Ereignisbehandlung
	 */
	public void actionPerformed (ActionEvent e){
		
		if(e.getSource() == neuDAS){
			//neu();
		}
		else if(e.getSource() == schliessenDAS){
			dispose();							
		}
		else if(e.getSource() == einfuegenDAS){
			einfuegen();
		}
		else if(e.getSource() == auswaehlenDAS){
			//auswaehlen();
		}
		else if(e.getSource() == aendernDAS){
			//aendern();
		}
		else if(e.getSource() == loeschenDAS){
			//loeschen();
		}
	}
	
	public void einfuegen(){
	
		entgegennehmen();
	}

	public void entgegennehmen(){
		
		sorte.fromStringSortenName(sortenNameDW.getText());
		art.fromStringArt(artenNameDW.getText());
		//pflanze.fromStringSortenSchaerfegrad(schaerfegradDW.getText());
	}
}
